
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)

project(recipe-05 LANGUAGES CXX)

# expose options to the user
option(USE_LIBRARY "compiler sources into a library" OFF)

message(STATUS "compiler sources into a library? ${USE_LIBRARY}")

include(CMakeDependentOption)

# second option depends on the value of the first
cmake_dependent_option(
    MAKE_STATIC_LIBRARY "compiler sources into a static library" OFF
    "USE_LIBRARY" ON
)

# third option depends on the value of the first
cmake_dependent_option(
    MAKE_SHARED_LIBRARY "compiler sources into a shared library" ON
    "USE_LIBRARY" ON
)

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

# list sources
list(APPEND _sources Message.hpp Message.cpp)

if (USE_LIBRARY)
    message(STATUS "compiler sources into a STATIC library? ${MAKE_STATIC_LIBRARY}")
    message(STATUS "compiler sources into a SHARED library? ${MAKE_SHARED_LIBRARY}")

    if (MAKE_SHARED_LIBRARY)
        add_library(message SHARED ${_sources})
        add_executable(hello_world hello_world.cpp)
        target_link_libraries(hello_world message)
    endif()

    if (MAKE_STATIC_LIBRARY)
        add_library(message STATIC ${_sources})
        add_executable(hello_world hello_world.cpp)
        target_link_libraries(hello_world message)
    endif()

else()
    add_executable(hello_world hello_world.cpp ${_sources})
endif()
